home *** CD-ROM | disk | FTP | other *** search
/ Crosscountry USA Photo Safari / Crosscountry USA Photo Safari.iso / Data / cc_base / pak00_16bit_f.pk3 / anim / adornment / chk_adorns.pl
Perl Script  |  2003-11-21  |  2KB  |  107 lines

  1. #!/usr/bin/perl
  2. use strict;
  3.  
  4. use IO::Dir;
  5. use IO::File;
  6.  
  7. main();
  8.  
  9. sub main {
  10.   my $dir = IO::Dir->new('.');
  11.  
  12.   if (!$dir) {
  13.     die "Huh?? can't open '.' to get a directory listing!\nError: $!\n";
  14.   }
  15.  
  16.   my $dir_entry;
  17.  
  18.   while ($dir_entry = $dir->read) {
  19.     next if $dir_entry =~ /^\.\.?$/;
  20.     next if $dir_entry =~ /^CVS/i;
  21.     next if ! -d $dir_entry;
  22.     verify_flickers($dir_entry);
  23.   }
  24.  
  25.   $dir->close;
  26.  
  27.   print "Hit enter to quit\n";
  28.   <stdin>;
  29. }
  30.  
  31. sub verify_flickers {
  32.   my ($dirname) = @_;
  33.  
  34.   my $flicker_dir = IO::Dir->new($dirname);
  35.  
  36.   if (!$flicker_dir) {
  37.     print "Huh?? can't open '$dirname' to get a directory listing!\nError:$!\n";
  38.     return;
  39.   }
  40.  
  41.   my $dir_entry;
  42.   my %codes = (
  43.     'rds' => '',
  44.     'rdw' => '',
  45.     'rns' => '',
  46.     'rnw' => '',
  47.     'lds' => '',
  48.     'ldw' => '',
  49.     'lns' => '',
  50.     'lnw' => '',
  51.   );
  52.  
  53.   print "$dirname\n";
  54.   while ($dir_entry = $flicker_dir->read) {
  55.     next if $dir_entry =~ /^\.\.?$/;
  56.     next if $dir_entry =~ /^CVS/i;
  57.     next if -d $dir_entry;
  58.     
  59.     if ($dir_entry =~ /${dirname}_(...)/) {
  60.       $codes{$1} = $dir_entry;
  61.     }
  62.   }
  63.  
  64.   for my $code (sort keys %codes) {
  65.     if ($codes{$code} eq '') {
  66.       print "\t", $code, " missing\n";
  67.     } else {
  68.       print "\t", $code, " found";
  69.       if ($codes{$code} =~ /\.a$/i) {
  70.         print " (alias to: ";
  71.         my $fh = IO::File->new($dirname . '/' . $codes{$code});
  72.         if (!defined($fh)) {
  73.           print "??";
  74.         } else {
  75.           my $filename = <$fh>;
  76.           chomp($filename);
  77.           print $filename;
  78.           $fh->close;
  79.         }
  80.         print ")";
  81.  
  82.       # not an alias
  83.       } else {
  84.         $codes{$code} =~ s/\.pcx$//gi;
  85.         $codes{$code} =~ s/\.jpg$//gi;
  86.         $codes{$code} =~ s/\.an1$//gi;
  87.         $codes{$code} =~ s/\.an2$//gi;
  88.         $codes{$code} =~ s/\.anm.p$//gi;
  89.         $codes{$code} =~ s/_[0-9]+//gi;
  90.         my $prop_name = $dirname . '/' . $codes{$code} . ".anm.p";
  91.         if (! (-e $prop_name) ) {
  92.           print " $prop_name missing";
  93.           # create the missing .anm.p file here
  94.           my $fh = IO::File->new($prop_name, "w");
  95.           $fh->print("{}");
  96.           $fh->close;
  97.         }
  98.       }
  99.       print "\n";
  100.     }
  101.   }
  102.  
  103.   $flicker_dir->close;
  104. }
  105.  
  106. __END__
  107.